﻿using System.Linq;
using ControleRepresentante.Logic.Models;

namespace ControleRepresentante.Logic.ImpostoHandlers
{
    public class JolitexImpostoHandler : IImpostoHandler
    {
        public static readonly string[] DescricaoContains = new[] { "tap", "banh" };
        public const double Imposto = 0.1;

        public bool CanHandle(Representante representante, Pedido pedido, Produto produto)
        {
            string lowerDescricao = produto.Descricao.ToLower();

            return representante.UseJolitex && 
                   pedido.Fabrica.FabricaJolitex != null &&
                   pedido.Fabrica.FabricaJolitex.IsJolitex &&
                   DescricaoContains.Any(lowerDescricao.Contains);
        }

        public double Evaluate(Produto produto)
        {
            return produto.Total * Imposto;
        }
    }
}